package com.lcredu.seckill.util.validate;

import org.springframework.util.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * @author 黎长容
 * @date 2025-08-24 16:49
 * 自定义校验器: 1.实现ConstraintValidator接口
 * 2.
 */
/**
 * 手机号验证器类，用于验证字符串是否符合手机号格式要求
 * @author 18442
 */
public class IsMobileValidator implements ConstraintValidator<IsMobile, String> {
    private boolean required = false;

    /**
     * 初始化验证器实例
     *
     * @param constraintAnnotation 约束注解实例，包含验证规则的配置信息
     */
    @Override
    public void initialize(IsMobile constraintAnnotation) {
        required = constraintAnnotation.required();
    }

        /**
     * 验证指定的字符串是否符合手机号格式要求
     *
     * @param value                          待验证的字符串
     * @param constraintValidatorContext 验证上下文，用于构建错误信息和处理验证过程
     * @return 验证结果，true表示符合手机号格式，false表示不符合
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        // 如果是必填项，直接验证手机号格式
        if (required) {
            return ValidatorUtil.isMobile(value);
        } else {
            // 如果不是必填项，空值认为验证通过，非空值才验证手机号格式
            if (!StringUtils.hasText(value)) {
                return true;
            } else {
                return ValidatorUtil.isMobile(value);
            }
        }
    }



}
